/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.edu.itschapala.sistemas.septimo.control;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import mx.edu.itschapala.sistemas.septimo.modelo.Cliente;
import mx.edu.itschapala.sistemas.septimo.enumeracion.TipoBusqueda;
import static mx.edu.itschapala.sistemas.septimo.enumeracion.TipoBusqueda.*;

/**
 *
 * @author Miguel Romero
 */
public class ClienteLnLista  implements ClienteLnLocal{
    private List<Cliente> clienlista = new ArrayList<Cliente>();
    
    
     //____________________________singleton_____________________________________
    
    private static ClienteLnLista instanciaC;
    
    public ClienteLnLista(){
        
    }
    
    public static ClienteLnLista getIsnstnciaC(){
        if (instanciaC==null){
            instanciaC=new ClienteLnLista();
        }
        return instanciaC;
    }
    
    //____________________________singleton_____________________________________

	public void clienregistrar(Cliente cliente){
		clienlista.add(cliente);
	}
	public void clienmodificar(Cliente cliente){
		Cliente ctmp=clienbuscarPorCodigo(cliente.getId());
		if(ctmp!=null){
			clienlista.remove(ctmp);
			clienlista.add(cliente);
		}

	}
	public void clieneliminar(Cliente cliente){
		Cliente ctmp=clienbuscarPorCodigo(cliente.getId());
		if(ctmp!=null){
			clienlista.remove(ctmp);
		}else{
                    System.out.println("No se encontro el Cliente");
                }

	}
	public Cliente clienbuscarPorCodigo(int id){
		Cliente ctmp=null;
		for(Cliente c : clienlista){
			if(c.getId()==id){
				ctmp=c;
			}
		}
		return ctmp;

	}
	public List<Cliente> cliengetTodos(){
		return clienlista;
	}

    @Override
    public List<Cliente> cliengetPorNombre(String Nombre, TipoBusqueda criterio) {
        List<Cliente> ctmp = new ArrayList<Cliente>();
        switch(criterio){
            case INICIA:
                for(Cliente c : clienlista){
                    if(c.getNombre().startsWith(Nombre)){
                        ctmp.add(c);
                    }
                }
                break;
            case CONTIENE:
                for(Cliente c : clienlista){
                    if(c.getNombre().contains(Nombre)){
                        ctmp.add(c);
                    }
                }
                break;
        
        }    
        return ctmp;
    }
}